#include <Python.h>
#include <kuai/sim/energy.hpp>

#ifndef _KUAISUAN_ENERGY_HPP_
#define _KUAISUAN_ENERGY_HPP_

namespace kuai { namespace suan {

	class EnergyProxy
	{
	public:
		virtual ~EnergyProxy();

		virtual bool prepare(PyObject* self, PyObject* model) = 0;
		std::auto_ptr<EnergyFunction> func;
	};

	class ForceFieldEnergyProxy
		: public EnergyProxy
	{
	public:
		virtual bool prepare(PyObject* self, PyObject* model);
	};

	class NonbondEnergyProxy
		: public ForceFieldEnergyProxy
	{
	public:
		virtual bool prepare(PyObject* self, PyObject* model);
	};

	void screenPairList(PyObject* filter, PyObject* fffunc, int rank);



} }


#endif
